From 7cc8cf2888f8a295b0f348095e818c5495523e58 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 25 Aug 2009 15:43:52 +0200 Subject: [PATCH] Fix cairo clipping to client side windows When updating the clip region on cairo context (due to window changes or paints of different sizes) we reset the old clip region, but this was erronously done inside a cairo_save/cairo_restore pair, which made the reset not take effect. This fixes bug #592263. --- gdk/gdkwindow.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c index 7ca6c3c9d0..195ba3e358 100644 --- a/gdk/gdkwindow.c +++ b/gdk/gdkwindow.c @@ -4602,11 +4602,11 @@ gdk_window_set_cairo_clip (GdkDrawable *drawable, if (!private->paint_stack) { + cairo_reset_clip (cr); + cairo_save (cr); cairo_identity_matrix (cr); - cairo_reset_clip (cr); - cairo_new_path (cr); gdk_cairo_region (cr, private->clip_region_with_children); @@ -4619,13 +4619,12 @@ gdk_window_set_cairo_clip (GdkDrawable *drawable, /* Only needs to clip to region if piggybacking on an implicit paint pixmap */ + cairo_reset_clip (cr); if (paint->uses_implicit) { cairo_save (cr); cairo_identity_matrix (cr); - cairo_reset_clip (cr); - cairo_new_path (cr); gdk_cairo_region (cr, paint->region); cairo_restore (cr); -- 2.30.2